//
//  GatewayPacketModel.h
//  Fotile
//
//  Created by NB1539 on 17/2/13.
//  Copyright © 2017年 xlink.cn. All rights reserved.
//

#import <Foundation/Foundation.h>

/*
 发送命令	应答命令	说明
 0x01	--      APP 允许设备加入
 0x02	--      网关通知APP新设备加入
 0x03	0x33	APP 删除设备
 0x04	0x34	APP 订阅子设备（删除此接口2017-02-09 10:00:33）
 0x05	0x35	APP 获取子设备列表
 0x06	0x36	APP 获取子设备信息
 0x07	0x37	APP 控制字设备
 0x08 – 0x38    获取子设备Accesskey
 0x09 – 0x39    设置子设备Accesskey
 0x0a – 0x3a    获取子设备SubKey
 */
typedef NS_ENUM(uint8_t, FTIKCCSendTypeCMD) {
    FTIKCCSendTypeCMDAllowAddDevice = 0x01,         // APP允许设备加入
    FTIKCCSendTypeCMDNotifyNewDevice,               // 网关通知APP新设备加入
    FTIKCCSendTypeCMDDeleteDevice,                  // APP 删除设备
    FTIKCCSendTypeCMDReadSubDevice,                 // APP 设置子设备ACCESSKEY -- 0x04 -- 0x34
    FTIKCCSendTypeCMDSubDeviceList,                 // APP 获取子设备列表
    FTIKCCSendTypeCMDSubDeviceInfo,                 // APP 获取子设备信息
    FTIKCCSendTypeCMDControlSubDevice,
    FTIKCCSendTypeCMDControlCodeGetAccesskey = 0x08,
    FTIKCCSendTypeCMDControlCodesetAccesskey,
    FTIKCCSendTypeCMDControlCodeGetSubKey,
    FTIKCCSendTypeCMDGainCurrentStatus = 0x10,      // APP 获取网关当前状态。
    FTIKCCSendTypeCMDControlAtomosPhereLight,       // 控制氛围灯-- 0x11 -- 0x41
    FTIKCCSendTypeCMDOpenTempSSID,
    FTIKCCSendTypeCMDSetOnlyOneSSID,
    FTIKCCSendTypeCMDControlEnterEasyLink,
    FTIKCCSendTypeCMDResetOrRebootDevice,
    FTIKCCSendTypeCMDNetWorkPattern,                 // APP 控制网关，设置网络模式；内网模式下网关不能访问任何外网；外网模式下无限制
    FTIKCCSendTypeCMDUpgradeVersion         // APP 控制网关，开始远程升级
};

/**
 网关返回设备的命令状态
 
 - FTIKCCReceiveDataCmdDeleteDevice: App 删除设备
 */
typedef NS_ENUM(uint8_t, FTIKCCReceiveDataCmd) {
    FTIKCCReceiveDataCmdNotifyNewDevice             = 0x02, // 网关通知APP新设备加
    FTIKCCReceiveDataCmdDeleteDevice                = 0x33, // APP 删除设备
    FTIKCCReceiveDataCmdSubscribeDevice,                    // APP 订阅子设备， 设置accesskey设置子设备ACCESSKEY -- 0x04 -- 0x34
    FTIKCCReceiveDataCmdGetSubscribeDeviceList,             // APP 获取子设备列表
    FTIKCCReceiveDataCmdGetSubscribeDeviceInfo,             // APP 获取子设备信息
    FTIKCCReceiveDataCmdControlSubDevice,                   // APP 控制子设备
    FTIKCCReceiveDataCmdGetAccesskey                = 0x38,
    FTIKCCReceiveDataCmdSetAccesskey                = 0x39,
    FTIKCCReceiveDataCmdGetSubKey                   = 0x3a,
    FTIKCCReceiveDataCmdGetIKCCCurrentStatus        = 0x40, // APP 获取网关当前状态
    FTIKCCReceiveDataCmdControlIKCCLight,                   // APP 控制网关氛围灯
    FTIKCCReceiveDataCmdOpenTempSSID,                       // APP 控制网关；开启临时SSID
    FTIKCCReceiveDataCmdSetOnlyOneSSID,                     // APP 控制网关；设定唯一SSID名字，加密方式及密码
    FTIKCCReceiveDataCmdControlEnterEasyLink,               // APP 控制网关；进入easylink模式
    FTIKCCReceiveDataCmdSetIKCCNetStatus            = 0x46, // APP 控制网关；设定网络模式（内外网）
    FTIKCCReceiveDataCmdSetRemoteUpdateURI                  // APP 控制网关；设定远程升级地址
};
@class DeviceModel;
/**
 网关协议包
 */
@interface GatewayPacketModel : NSObject

@property (nonatomic,assign) FTIKCCSendTypeCMD controlCode;
@property (nonatomic,assign) FTIKCCReceiveDataCmd recvCode;
@property (nonatomic,assign) UInt32 messageId;
@property (nonatomic,strong) NSData *sendData;
@property (nonatomic,strong) DeviceModel *deviceModel;
@end
